package net.janeluo.rs.service;

import java.math.BigDecimal;
import java.util.List;

import net.janeluo.rs.entity.RS_User;

import org.apache.commons.lang.StringUtils;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.sql.Criteria;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.nutz.service.Service;

/**
 * 用户管理处理业务类
 * 
 * @author DLK)YangYining
 * @version 1.0.0
 */
@IocBean(fields = { "dao" })
public class UserManagerService extends Service {
    private static final Log log = Logs.getLog(UserManagerService.class);
    
    public UserManagerService() {
        super();
    }

    public UserManagerService(Dao dao) {
        super(dao);
    }
    
    /**
     * 用户新增
     * 
     * @param entity 用户实体
     * @return 用户实体
     */
    public RS_User insertUser(RS_User entity){
        return dao().insert(entity);
    }
    
    /**
     * 用户更新
     * 
     * @param entity 用户实体
     * @return 用户实体
     */
    public int updateUser(RS_User entity){
        return dao().update(entity);
    }
    
    /**
     * 根据用户id查询用户
     * 
     * @param userid 用户id
     * @return 用户信息实体
     */
    public RS_User findUserById(String userid) {
        return dao().fetch(RS_User.class, Cnd.where("userid", "=", userid));
    }
    
    /**
     * 根据用户id查询用户
     * 
     * @param userid 用户id
     * @return 用户信息实体
     */
    public void deleteUser(Integer userid) {
        dao().delete(RS_User.class, userid);
    }
    
    /**
     * 根据用户id查询用户
     * 
     * @param userid 用户id
     * @return 用户信息实体
     */
    public void deleteUser(String[] userids) {
        dao().clear(RS_User.class, Cnd.where("userid", "in", userids));
    }
    
    /**
     * 查询用户列表 
     * 
     * @param userName 用户姓名
     * @param deptname 所属机构
     * @return
     */
    public List<RS_User> getUserList (String userName, String deptname){
        log.debug("================= 查询列表处理开始 ==================");
        
        Criteria cri = Cnd.cri();
        if (StringUtils.isNotEmpty(userName)) {
            cri.where().andLike("userName", "%" + userName + "%");
        }
        if (StringUtils.isNotEmpty(userName)) {
            cri.where().andEquals("department", deptname);
        }
        cri.getOrderBy().asc("id");
        List<RS_User> list = dao().query(RS_User.class, cri);
        log.debug("================= 查询列表处理结束 ==================");
        return list;  
    }
    
    /**
     * 用户充值
     * 
     * @param id 用id
     * @param rechargeAmount 充值金额
     */
    public void saveUserRecharge(String userid, String rechargeAmount){
        log.debug("========== 用户充值处理开始  =========");
        
        // 查询用户信息
        RS_User user = dao().fetch(RS_User.class, Cnd.where("userid", "=", userid));
        String balance = StringUtils.isNotEmpty(user.getBalance()) ? user.getBalance() : "0";
        
        // 计算充值后的余额，并更新到数据库中。
        BigDecimal balanceBD = new BigDecimal(balance);
        BigDecimal decimal = balanceBD.add(new BigDecimal(rechargeAmount));
        user.setBalance(decimal.toString());
        
        dao().update(user);
        
        log.debug("========== 用户充值处理结束  =========");
    }
    
    public static void main(String[] args) {
        BigDecimal balanceBD = new BigDecimal("0");
        BigDecimal decimal = balanceBD.add(new BigDecimal("12.11"));
        System.out.println(decimal.toString());
    }
}
